package main

import (
	"github.com/APP/core"

	"github.com/APP/global"
	"github.com/APP/initialize"
)

func main() {
	// 初始化Viper
	global.APP_VP = core.Viper()

	// 初始化zap日志库
	initialize.InitializeZap()

	// 可爱的系统启动标识
	global.APP_LOG.Info("✨🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀✨")
	global.APP_LOG.Info("(ﾉ◕ヮ◕)ﾉ*:･ﾟ✧ 系统启动中... ✧ﾟ･: *ヽ(◕ヮ◕ヽ)")
	global.APP_LOG.Info("✨🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀✨")

	// 初始化数据库
	initialize.InitDB()

	// 初始化Redis
	if global.APP_CONFIG.System.UseRedis {
		initialize.InitRedis()
	}

	// 其他初始化
	initialize.OtherInit()

	L := core.GinZapColorLogger()

	// 退出时关闭数据库连接
	if global.APP_DB != nil {

		sqlDB, _ := global.APP_DB.DB()
		defer func() {
			sqlDB.Close()
			global.APP_LOG.Info("✨🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀✨")
			global.APP_LOG.Info("(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 系统优雅关闭啦～ ヾ(•ω•`)o")
			global.APP_LOG.Info("✨🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀🎀✨")
		}()
	}

	core.RunServer(L)
}
